/**
 * 高德地图逆地理编码工具
 */
export default {
    /**
     * 初始化地理编码服务
     * @returns {Promise} 返回AMap.Geocoder实例
     */
    initGeocoder() {
        return new Promise((resolve) => {
            if (window.AMap && window.AMap.Geocoder) {
                resolve(new AMap.Geocoder({
                    city: "全国", // 城市，默认："全国"
                    radius: 1000 // 范围，默认：500
                }));
            } else {
                // 如果AMap未加载完成，等待加载
                const timer = setInterval(() => {
                    if (window.AMap && window.AMap.Geocoder) {
                        clearInterval(timer);
                        resolve(new AMap.Geocoder({
                            city: "全国",
                            radius: 1000
                        }));
                    }
                }, 100);
            }
        });
    },

    /**
     * 经纬度转地址
     * @param {Number} lng - 经度
     * @param {Number} lat - 纬度
     * @returns {Promise} 返回地址信息
     */
    async getAddress(lng, lat) {
        try {
            const geocoder = await this.initGeocoder();
            return new Promise((resolve, reject) => {
                geocoder.getAddress([lng, lat], (status, result) => {
                    if (status === 'complete' && result.info === 'OK') {
                        resolve(result.regeocode);
                    } else {
                        reject(new Error('获取地址失败'));
                    }
                });
            });
        } catch (error) {
            console.error('高德地图初始化失败:', error);
            throw error;
        }
    }
};